home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / PowerPlant / Everything / CButtons.cp < prev    next >
Encoding:
Text File  |  1998-10-11  |  4.8 KB  |  225 lines  |  [TEXT/CWIE]

  1. // CButtons.cp -- window methods
  2.  
  3. #include "CButtons.h"
  4.  
  5. #include <UEnvironment.h>
  6. #include <UReanimator.h>
  7. #include <URegistrar.h>
  8. #include <LStream.h>
  9. #include <LTabGroup.h>
  10. #include <LStaticText.h>
  11. #include <LAMStaticTextImp.h>
  12. #include <LGAStaticTextImp.h>
  13. #include <CInvisibleButton.h>
  14. #include <LPushButton.h>
  15. #include <LAMPushButtonImp.h>
  16. #include <LGAPushButtonImp.h>
  17. #include <LTextGroupBox.h>
  18. #include <LAMControlViewImp.h>
  19. #include <LGATextGroupBoxImp.h>
  20. #include <LBevelButton.h>
  21. #include <LAMBevelButtonImp.h>
  22. #include <LGABevelButtonImp.h>
  23. #include <LCicnButton.h>
  24. #include <CustomControls.h>
  25. #include <LButton.h>
  26. #include <CTextUtils.h>
  27.  
  28. #include "DDocData.h"
  29. #include "DModalCheckboxesData.h"
  30. #include "DModalRadiosData.h"
  31. #include "DModalTextData.h"
  32. #include "DModalStuffData.h"
  33. #include "DModalBarsData.h"
  34. #include "DModelessCheckboxesData.h"
  35. #include "DModelessRadiosData.h"
  36. #include "DModelessTextData.h"
  37. #include "DModelessStuffData.h"
  38. #include "DModelessBarsData.h"
  39. #include "EverythingCmds.h"
  40.  
  41.  
  42. #define PPob_ButtonsID    201
  43. #define RidL_ButtonsID    201
  44.  
  45. Boolean        CButtons::sIsRegistered = false;
  46.  
  47. //----------
  48. CButtons*        CButtons::CreateButtons (
  49.     LCommander*        inSuperCommander,
  50.     DDocData*        inData)
  51. {
  52.     if (!sIsRegistered) {
  53.         RegisterClass ();
  54.     }
  55.  
  56.     CButtons*        window;
  57.     window = (CButtons *)LWindow::CreateWindow(PPob_ButtonsID, inSuperCommander);
  58.     window->ConnectToData (inData);
  59.     return window;
  60. }
  61.  
  62. //----------
  63. #define    RegisterClasses(AbstractClass,AMImpClass,GAImpClass)    \
  64.     RegisterClass_(AbstractClass);    \
  65.     if (useAppearance) {    \
  66.         RegisterClassID_(AMImpClass, AbstractClass::imp_class_ID);    \
  67.     } else {    \
  68.         RegisterClassID_(GAImpClass, AbstractClass::imp_class_ID);    \
  69.     }
  70.  
  71. //----------
  72. void    CButtons::RegisterClass ()
  73. {
  74.     Boolean        useAppearance = UEnvironment::HasFeature (env_HasAppearance);
  75.  
  76.     RegisterClass_(CButtons);
  77.  
  78.     // register the pane classes we use
  79.     RegisterClasses (LStaticText, LAMStaticTextImp, LGAStaticTextImp);
  80.     RegisterClass_(CInvisibleButton);
  81.     RegisterClasses (LPushButton, LAMPushButtonImp, LGAPushButtonImp);
  82.     RegisterClasses (LTextGroupBox, LAMControlViewImp, LGATextGroupBoxImp);
  83.     RegisterClasses (LBevelButton, LAMBevelButtonImp, LGABevelButtonImp);
  84.     RegisterClass_(LCicnButton);
  85.     RegisterClasses (CPushButton, CustomControlImp, CustomControlImp);
  86.     RegisterClass_(LButton);
  87.  
  88.     sIsRegistered = true;
  89. }
  90.  
  91. //----------
  92. CButtons::CButtons (
  93.     LStream*    inStream)
  94.     : LWindow (inStream)
  95. {
  96. }
  97.  
  98. //----------
  99. CButtons::~CButtons ()
  100. {
  101. }
  102.  
  103. //----------
  104. //    This member function gets called once the containment hierarchy that contains
  105. //    this pane has been built. It gives us a chance to get data members for
  106. //    interesting subviews, and to do other operations now that our subviews exist.
  107. void    CButtons::FinishCreateSelf ()
  108. {
  109.     mInvisibleButton = (CInvisibleButton*) FindPaneByID ('Inve');
  110.  
  111.     mStandardButton = (LPushButton*) FindPaneByID ('Stad');
  112.  
  113.     mDefaultButton = (LPushButton*) FindPaneByID ('Deft');
  114.  
  115.     mButtonButton = (LBevelButton*) FindPaneByID ('Butn');
  116.  
  117.     mNextButton = (LBevelButton*) FindPaneByID ('Next');
  118.  
  119.     mNext2Button = (LBevelButton*) FindPaneByID ('Nex2');
  120.  
  121.     mRightButton = (LCicnButton*) FindPaneByID ('Rigt');
  122.  
  123.     mLightButton = (CPushButton*) FindPaneByID ('Ligt');
  124.  
  125.     mRight2Button = (LButton*) FindPaneByID ('Rig2');
  126.  
  127.     mButton2Button = (CPushButton*) FindPaneByID ('But2');
  128.  
  129.     mRight3Button = (LButton*) FindPaneByID ('Rig3');
  130.  
  131.     mRect3DButton = (CPushButton*) FindPaneByID ('RecD');
  132.  
  133.     mLeftIconButton = (LPushButton*) FindPaneByID ('Lefn');
  134.  
  135.     mRightIconButton = (LPushButton*) FindPaneByID ('Rign');
  136.  
  137.     mTitledPICTButton = (CPushButton*) FindPaneByID ('TitT');
  138.  
  139.  
  140.     UReanimator::LinkListenerToControls(this, this, RidL_ButtonsID);
  141.         // "connect" self to our controls that we want to "listen" to
  142.  
  143.     // any additional initialization for your window:
  144. }
  145.  
  146. //----------
  147. void    CButtons::ConnectToData (
  148.     DDocData*        inData)
  149. {
  150.     mData = inData;
  151.     mData->AddListener (this);
  152.  
  153. }
  154.  
  155. //----------
  156. void    CButtons::DataChanged (
  157.     long        inDataID)
  158. {
  159.     StopListening ();
  160.  
  161.  
  162.     StartListening ();
  163. }
  164.  
  165. //----------
  166. void    CButtons::ListenToMessage (
  167.     MessageT    inMessage,
  168.     void*        ioParam)
  169. {
  170.     switch (inMessage) {
  171.     case msgDataChanged:
  172.             DataChanged ((long)ioParam);
  173.         break;
  174.  
  175.     default:
  176.           ; // do something
  177.         break;
  178.     }
  179. }
  180.  
  181. //----------
  182. Boolean        CButtons::ObeyCommand (
  183.     CommandT    inCommand,
  184.     void*        ioParam)
  185. {
  186.     Boolean        cmdHandled = true;
  187.  
  188.     if (inCommand < 0) {
  189.         // modal dialog has finished
  190.  
  191.         switch (-inCommand) {
  192.         }
  193.  
  194.     } else {
  195.         switch (inCommand) {
  196.  
  197.         default:
  198.                 cmdHandled = LWindow::ObeyCommand(inCommand, ioParam);
  199.             break;
  200.         }
  201.     }
  202.  
  203.     return cmdHandled;
  204. }
  205.  
  206. //----------
  207. void    CButtons::FindCommandStatus (
  208.     CommandT    inCommand,
  209.     Boolean        &outEnabled,
  210.     Boolean        &outUsesMark,
  211.     Char16        &outMark,
  212.     Str255        outName)
  213. {
  214.     outUsesMark = false;
  215.  
  216.     switch (inCommand) {
  217.  
  218.  
  219.     default:
  220.             LWindow::FindCommandStatus(inCommand, outEnabled,
  221.                                         outUsesMark, outMark, outName);
  222.         break;
  223.     }
  224. }
  225.